package org.hy.persistence.group;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.hy.domain.group.GAnswer;
import org.hy.domain.group.GDiscuss;
import org.hy.domain.ug.Counter;

/**
 * 讨论映射器
 * @author Administrator
 *
 */
public interface GDiscussMapper {

	/**
	 * 添加讨论
	 * @param gDiscuss讨论对象
	 * @return
	 */
	int insertGDiscuss(GDiscuss gDiscuss);
	
	/**
	 * 添加解答
	 * @param gAnswer 解答对象
	 * @return
	 */
	int insertGAnswer(GAnswer gAnswer);
	
	/**
	 * 更新讨论,包括讨论内容,黄金分享标记,解决时间
	 * @param gDiscuss讨论对象
	 * @return
	 */
	int updateGDiscuss(GDiscuss gDiscuss);
	
	/**
	 * 更新解答,包括解答内容,黄金解答标记,助力解答标记,赞数目
	 * @param gAnswer 解答对象
	 * @return
	 */
	int updateGAnswer(GAnswer gAnswer);
	
	/**
	 * 删除讨论
	 * @param idGDiscuss
	 * @return
	 */
	int deleteGDiscuss(int idGDiscuss);
	
	/**
	 * 删除解答
	 * @param idGAnswer
	 * @return
	 */
	int deleteGAnswer(int idGAnswer);
	
	/**
	 * 查找讨论
	 * @param id 讨论id
	 * @return 讨论对象
	 */
	GDiscuss findGDiscussById(int id);
	
	/**
	 *根据id查找回答 
	 * @param id回答id
	 * @return
	 */
	GAnswer findGAnswerById(int id);
	
	/**
	 * 查找小组成员发布的讨论列表
	 * @param idGm 用户idGm
	 * @param offset 偏移量
	 * @param size 数目
	 * @return
	 */
	List<GDiscuss> findGDiscussByIdGm(@Param("idGm")int idGm,@Param("offset")int offset,@Param("size")int size);

	/**
	 * 查找小组的讨论
	 * @param gid 小组id
	 * @param offset 偏移量
	 * @param size 数目
	 * @return 讨论列表
	 */
	List<GDiscuss> findGDiscussByGid(@Param("gid")int gid,@Param("offset")int offset,@Param("size")int size);

	/**
	 *  查找用户发表的讨论列表，包含各个小组的讨论列表
	 * @param uid 用户id
	 * @param offset 
	 * @param size
	 * @return 讨论列表
	 */
	List<GDiscuss> findGDiscussByUid(@Param("uid")int uid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 根据id查找问题及回复
	 * @param id 问题id
	 * @param offset
	 * @param size
	 * @return
	 */
	GDiscuss findGDiscussWithGAnswerById(@Param("id")int id,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 查找用户提出的问题或回复.
	 * @param uid 用户id
	 * @param offset
	 * @param size
	 * @return
	 */
	List<GDiscuss> findGDiscussWithGAnswerByUid(@Param("uid")int uid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 查找小组成员发布的小组讨论列表
	 * @param idGm 小组成员编号
	 * @param offset 
	 * @param size
	 * @return 讨论列表
	 */
	List<GDiscuss> findGDiscussWithGAnswerByIdGm(@Param("idGm")int idGm,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 查找小组提出的问题及回复
	 * @param gid 小组id
	 * @param offset
	 * @param size
	 * @return
	 */

	List<GDiscuss> findGDiscussWithGAnswerByGid(@Param("gid")int gid,@Param("offset")int offset,@Param("size")int size);
	
	
	
	/**
	 * 统计小组讨论数目
	 * @param gid小组id
	 * @return
	 */
	int countGDiscuss(int gid);
	
	/**
	 * 统计问题的回复数
	 * @param gDiscussIds问题数组
	 * @return
	 */
	List<Counter> countGAnswer(int[] gDiscussIds);
	
	/**
	 * 统计小组的集体智慧数目
	 * @param gid小组id
	 * @return
	 */
	int countWisdomedGDiscuss(int gid);
	
	/**
	 * 查找是集体智慧的讨论列表
	 * @param gid小组id
	 * @param offset偏移量
	 * @param size 数目
	 * @return 讨论列表
	 */
	List<GDiscuss> findWisdomedGDiscuss(@Param("gid")int gid,@Param("offset")int offset,@Param("size")int size);

	
}
